﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using Entidades;

namespace Mundialeitor
{
    public enum EnumTipoDeMensaje
    {
        Informacion,
        Pregunta,
        Error
    }

    public static class Utilidades
    {
        public static void CargarGrilla(GridView grilla, IEnumerable source)
        {
            grilla.DataSource = source;                        
            grilla.DataKeyNames = new string[] { "Id" };
            grilla.DataBind();
        }

        public static bool IsMail(string email)
        {
            Regex l_reg = new Regex("^(([^<;>;()[\\]\\\\.,;:\\s@\\\"]+" + "(\\.[^<;>;()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@" + "((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}" + "\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+" + "[a-zA-Z]{2,}))$");

            return (l_reg.IsMatch(email));
        }

        /// <summary>
        /// Metodo usado para llenar un combo con una lista de entidades.
        /// </summary>
        /// <param name="combo">El combo a cargar</param>
        /// <param name="source">La lista de entidades con la que se va a cargar el combo</param>
        /// <param name="dataTextField">Propiedad de la entidad que se mostrara</param>
        /// <param name="dataValueField">Propiedad de la entidad que se toma como valor al seleccionar algun item</param>
        public static void CargarCombo(DropDownList combo, Object source, string dataTextField, string dataValueField)
        {
            // seteo la propiedad de la Entidad que quiero mostrarle al usuario
            combo.DataTextField = dataTextField;
            // seteo la propiedad de la Entidad que quiero tomar como valor
            combo.DataValueField = dataValueField;
            combo.DataSource = source;
            combo.DataBind();
        }

        /// <summary>
        /// Metodo usado para llenar un combo con una lista de entidades.
        /// </summary>
        /// <param name="combo">El combo a cargar</param>
        /// <param name="source">La lista de entidades con la que se va a cargar el combo</param>
        /// <param name="dataTextField">Propiedad de la entidad que se mostrara</param>
        /// <param name="dataValueField">Propiedad de la entidad que se toma como valor al seleccionar algun item</param>
        /// <param name="primerItemVacio">Valor del primer item a mostrar cuando se cargue el combo</param>
        public static void CargarCombo(DropDownList combo, Object source, string dataTextField, string dataValueField, string primerItemVacio)
        {
            CargarCombo(combo, source, dataTextField, dataValueField);
            combo.Items.Insert(0, new ListItem(primerItemVacio, string.Empty));
        }

        public static void CargarComboDesdeEnumeracion(DropDownList combo, Type enumeracion)
        {
            var source =  EnumUtils.ListFromEnumeration(enumeracion);
            CargarCombo(combo, source, String.Empty, String.Empty);
        }

        public static void CargarComboDesdeEnumeracion(DropDownList combo, Type enumeracion, string primerItemVacio)
        {
            var source = EnumUtils.ListFromEnumeration(enumeracion);
            CargarCombo(combo, source, String.Empty, String.Empty, primerItemVacio);
        }
    }
}
